package yy.com.yjbotouch;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;

import yy.com.yjbotouch.util.TouchEventUtil;

/***
 * 参考：  http://www.cnblogs.com/sunzn/archive/2013/05/10/3064129.html
 * 这个讲解的很好，非常好
 * 2016年7月26日15:14:08
 * @author  yjbo
 */
//                Touch 事件相关方法	                        方法功能    ViewGroup    Activity
//    public boolean dispatchTouchEvent(MotionEvent ev)	    事件分发       Yes	      Yes
//    public boolean onInterceptTouchEvent(MotionEvent ev)  事件拦截       Yes	      No
//    public boolean onTouchEvent(MotionEvent ev)     	    事件响应       Yes	      Yes
    //在TouchEventFather中的事件拦截onInterceptTouchEvent返回值：
    //事件拦截--false的话就把事件传到子view的dispatchTouchEvent执行，不执行自身的onTouchEvent事件
    //事件拦截--true的话就不会把事件传到子view的dispatchTouchEvent执行，执行自身的onTouchEvent的ACTION_DOWN事件，up不执行，执行父view的ontouch的完成过程（down和up）。
    //事件拦截--super.onInterceptTouchEvent(ev)的话就会把事件都执行一遍，但是每个里面都不执行事件响应（onTouchEvent），只有子view（TouchEventChilds）执行事件响应（onTouchEvent），
    //                      执行完子view的ontouch的down方法之后，就执行父view的TouchEventActivity | dispatchTouchEvent --> ACTION_UP，
    //                      再执行自身view的TouchEventFather | dispatchTouchEvent --> ACTION_UP，以及TouchEventFather | onInterceptTouchEvent --> ACTION_UP
    //                      再执行子view的TouchEventChilds | dispatchTouchEvent --> ACTION_UP，以及TouchEventChilds | onTouchEvent --> ACTION_UP。

public class TouchActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_touch);
    }

    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.w("sunzn", "TouchEventActivity | dispatchTouchEvent --> " + TouchEventUtil.getTouchAction(ev.getAction()));
        return super.dispatchTouchEvent(ev);
    }

    public boolean onTouchEvent(MotionEvent event) {
        Log.w("sunzn", "TouchEventActivity | onTouchEvent --> " + TouchEventUtil.getTouchAction(event.getAction()));
        return super.onTouchEvent(event);
    }


//    @Override
//    public boolean onTouchEvent(MotionEvent event) {
//        MotionEventUtil.changeIntoContent("yjbo-TA-onTouchEvent", event.getAction());
//        return super.onTouchEvent(event);
//    }
//
//
//    @Override
//    public boolean dispatchTouchEvent(MotionEvent ev) {
//        MotionEventUtil.changeIntoContent("yjbo-TA-dispatchTou", ev.getAction());
//        return super.dispatchTouchEvent(ev);
//    }
}
